#include <iostream>

template <typename... Args>
// const T& 可以绑定到左值或右值，安全且只读
void print_cpp17(const Args &...args)
{
    ((std::cout << args << ' '), ...); // C++17 的「一元右折叠」（unary right fold） 语法：
    // 相当于
    //     (std::cout << args1 << ' '),
    //     (std::cout << args2 << ' '),
    //     (std::cout << args3 << ' '),
    //     (std::cout << args4 << ' ');
}

int main()
{
    print_cpp17(1, 2.5, "hello", 'c');
    int a{1};
    double b{2.5};
    const char *str{"hellow"};
    char c{'c'};
    print_cpp17(a, b, str, c);
}